1. Field
The present disclosure relates to communications in computer networks. More particularly, this invention is directed toward a virtualized network interface for Transfer Control Protocol (TCP) reassembly buffer allocation.
2. Description of Related Technology
In computer systems, virtualization is a process by which a virtual version of computing resources, such as hardware and software resources, i.e., a central processor unit, a storage system, an input/output resources, a network resource, an operating system, and other resources known in the art, are simulated by a computer system, referred to as a host machine. A typical host machine may comprise a hardware platform that optionally together with a software entity i.e., an operating system, operates a hypervisor, which is software or firmware that creates and operates virtual machines, also referred to as guest machines. Through hardware virtualization, the hypervisor provides each virtual machine with a virtual hardware operating platform. By interfacing with the virtual hardware operating platform, the virtual machines access the computing resources of the host machine to execute virtual machines' respective operations. As a result, a single host machine can support multiple virtual machines, each operating an operating system and/or other software entity, i.e., an application, simultaneously through virtualization.
In a typical host machine, the virtual hardware operating platform should be presented to the virtual machines in a manner that assures that the virtual nature of the hardware platform should not be discernible to the virtual machines. Consequently, the host machine should avoid conflicts between virtual machines in accessing the computing resources. To accomplish these goals, the host machine may implement a translation scheme between the virtual machines' software and the host machine's resources. With regard to accessing network resources, for example, the host machine may support virtual network interface that are presented to respective virtual machines. The virtual network interface Virtual Network Interface Card (VNIC) appears to the virtual machine as a physical Network Interface Card (NIC). However, the host machine translates between the VNIC and the NIC. As a result, the host machine can manage the network resources for multiple virtual machines.
When data is to be transmitted over a network from a remote machine to a local machine, the data is formatted by a protocol, e.g., Transmission Control Protocol (TCP), Remote Direct Memory Access over Converged Ethernet (RoCE), and/or other protocols known to a person having ordinary skill in the art. If the data does not fit into a packet defined by the protocol, the data is segmented into a plurality of packets, and the plurality of packets, also known as a stream, are transmitted. As known to a person having ordinary skill in the art, a packet stream comprises a sequence of packet originating from the same source address and destined to the same destination address.
At the local machine, the individually received packets must be reassembled. Some NICs allow for packets formatted by a certain protocol, e.g., TCP, to be reassembled at the NIC's hardware level, which is handled by a fixed number of statically assigned global reassembly contexts as known to a person having ordinary skill in the art. The context comprises a hardware resource, e.g., storage of information such as the destination IP address, TCP port number, TCP sequence, and other information known to a person having ordinary skill in the art. Consequently, the reassembly does not lend itself well to virtualization, where a reassembly is carried out by Virtual Network Interface Cards (VNIC), which can be dynamically created and destroyed.
Accordingly, there is a need in the art for an implementation of a virtual network interface for TCP reassembly, providing a solution to the above identified problems, as well as additional advantages evident to a person having ordinary skill in the art.